home *** CD-ROM | disk | FTP | other *** search
/ Freelog 117 / FreelogNo117-OctobreNovembre2013.iso / Programmation / jedit / jedit5.1.0install.exe / {app} / macros / Emacs / Emacs_Center_Line.bsh < prev    next >
Text File  |  2013-07-28  |  2KB  |  67 lines

  1. /**
  2.  * Emulates the Emacs "center-line" command, documented as follows (in
  3.  * GNU Emacs):
  4.  *
  5.  *      center-line is an interactive compiled Lisp function in 
  6.  *      `textmodes/text-mode'.
  7.  *
  8.  *      (center-line &optional NLINES)
  9.  *
  10.  *     Center the line point is on, within the width specified by `fill-column'.
  11.  *     This means adjusting the indentation so that it equals
  12.  *     the distance between the end of the text and `fill-column'.
  13.  *     The argument NLINES says how many lines to center.
  14.  */
  15.  
  16. source (MiscUtilities.constructPath(dirname(scriptPath), "EmacsUtil.bsh"));
  17.  
  18. void emacsCenterLine()
  19. {
  20.     caret = textArea.getCaretPosition();
  21.     caretLine = textArea.getCaretLine();
  22.     lineStart = textArea.getLineStartOffset (caretLine);
  23.     lineEnd = textArea.getLineEndOffset (caretLine);
  24.     lineIndex = textArea.getLineOfOffset (caretLine);
  25.     defaultFillColumn = getCardinalProperty ("buffer.maxLineLen", 79);
  26.  
  27.     // Convert the buffer name into a property name.
  28.  
  29.     propName = makeBufferPropertyName ("emacs.fillColumn.");
  30.     
  31.     // Get the buffer-specific fill column.
  32.     
  33.     fillColumn = getCardinalProperty (propName, defaultFillColumn);
  34.  
  35.     if ((! atEndOfBuffer()) && (lineStart < lineEnd))
  36.     {
  37.         // Be sure to ignore trailing newline.
  38.  
  39.         int           len = lineEnd - lineStart - 1;
  40.         String        line = textArea.getText (lineStart, len).trim();
  41.         StringBuffer  paddedString = new StringBuffer (fillColumn);
  42.         int           paddingNeeded;
  43.         int           frontPadding;
  44.         int           tailPadding;
  45.         int           i;
  46.  
  47.         len = line.length();
  48.         paddingNeeded = (fillColumn < len) ? 0 : (fillColumn - len);
  49.         i = paddingNeeded / 2;
  50.         frontPadding = i;
  51.         tailPadding  = i + (paddingNeeded % 2);
  52.  
  53.         for (i = 0; i < frontPadding; i++)
  54.             paddedString.append (' ');
  55.  
  56.         paddedString.append (line);
  57.  
  58.         selection = new Selection.Range (lineStart, lineEnd - 1);
  59.         textArea.setSelection (selection);
  60.         textArea.setSelectedText (paddedString.toString());
  61.     }
  62. }
  63.  
  64. emacsCenterLine();
  65.  
  66.  
  67.